Отправка почты через SMTP в Yii2 basic

Рассмотри пример отправки почты через SMTP с помощью yandex.

Открываем файл настроек /config/web.php и добавляем настройку отправки почты в элемент массива components:

<?php

$params = require(__DIR__ . '/params.php');

$config = [

     //...

     'components' => [
         'mailer' => [
             'class' => 'yii\swiftmailer\Mailer',
              'viewPath' => '@app/mail',
              'transport' => [
                  'class' => 'Swift_SmtpTransport',
                  'host' => 'smtp.yandex.ru',
                  'username' => '<username>@<yourDomain>',
                  'password' => '<userPassword>',
                  'port' => 465,
                  'encryption' => 'ssl',
              ],
              'useFileTransport' => false,
        ],
    ],
    //...
];

Где <username>@<yourDomain> - e-mail с которого будет отправлено письма (например: info@devreadwrite.com), <userpassword> - пароль от почтового ящика <username>@<yourdomain>.

Для отправки почты используем следующий код в необходимом месте:

Yii::$app->mailer->compose()
    ->setFrom('<fromUsername>@<yourDomain>')
    ->setTo('<user@Email>')
    ->setSubject('Уведемление с сайта <yourDomain>') // тема письма
    ->setTextBody('Текстовая версия письма (без HTML)')
    ->setHtmlBody('<p>HTML версия письма</p>')
    ->send();

Где <fromUsername>@<yourDomain> - e-mail отправителя (<username>@<yourDomain>), <user@Email> - e-mail получателя.

Отправка почты через SMTP в Yii2 advanced

Отправка почты через SMTP в Yii2 advanced практически не отличается от отправки в basic. Открываем файл настроек /common/config/main-local.php и добавляем настройку отправки почты в элемент массива components:

<?php

return [

    'components' => [

        //...

        'mailer' => [
             'class' => 'yii\swiftmailer\Mailer',
              'viewPath' => '@common/mail',
              'transport' => [
                  'class' => 'Swift_SmtpTransport',
                  'host' => 'smtp.yandex.ru',
                  'username' => '<username>@<yourDomain>',
                  'password' => '<userPassword>',
                  'port' => 465,
                  'encryption' => 'ssl',
              ],
              'useFileTransport' => false,
        ],
    ],
];

И отправляем в нужном месте:

Yii::$app->mailer->compose()
    ->setFrom('<fromUsername>@<yourDomain>')
    ->setTo('<user@Email>')
    ->setSubject('Уведемление с сайта <yourDomain>') // тема письма
    ->setTextBody('Текстовая версия письма (без HTML)')
    ->setHtmlBody('<p>HTML версия письма</p>')
    ->send();

Отличия в этих примеров лишь в файлах конфигураций и значением viewPath. Приятного использования.